package com.ruoyi.merchant.service;

import com.ruoyi.merchant.domain.dto.AnnouncementAddDTO;
import com.ruoyi.merchant.domain.dto.AnnouncementQueryDTO;
import com.ruoyi.merchant.domain.dto.AnnouncementUpdateDTO;
import com.ruoyi.merchant.domain.vo.AnnouncementDetailVO;
import com.ruoyi.merchant.domain.vo.AnnouncementListVO;

import java.util.List;

public interface IAnnouncementService {
    /**
     * 新增公告
     *
     * @param addDTO 公告信息
     * @return 公告ID
     */
    Long addAnnouncement(AnnouncementAddDTO addDTO);
    /**
     * 查询历史公告列表
     *
     * @param query 查询条件
     * @return 公告列表
     */
    List<AnnouncementListVO> getAnnouncementList(AnnouncementQueryDTO query);
    /**
     * 查询公告详情
     *
     * @param announcementId 公告ID
     * @return 公告详情
     */
    AnnouncementDetailVO getAnnouncementDetail(Long announcementId);
    /**
     * 删除公告
     *
     * @param announcementId 公告ID
     * @return 是否成功
     */
    boolean deleteAnnouncement(Long announcementId);

    /**
     * 更新公告
     *
     * @param announcementId 公告ID
     * @param updateDTO 更新信息
     * @return 是否成功
     */
    boolean updateAnnouncement(Long announcementId, AnnouncementUpdateDTO updateDTO);

    /**
     * 发布公告（草稿转发布）
     *
     * @param announcementId 公告ID
     * @return 是否成功
     */
    boolean publishAnnouncement(Long announcementId);

    /**
     * 下线公告
     *
     * @param announcementId 公告ID
     * @return 是否成功
     */
    boolean offlineAnnouncement(Long announcementId);

}
